Move subgroup size handling in line with spec#8609
Merged
cwfitzgerald merged 1 commit intogfx-rs:trunkfrom Dec 4, 2025
Merged
Conversation
5692ec1 to
6060a05
Compare
JMS55
reviewed
Dec 1, 2025
| /// | ||
| /// See <https://gpuweb.github.io/gpuweb/#gpuadapterinfo> | ||
| /// where you can always use these values on all devices. | ||
| pub const MAXIMUM_SUBGROUP_MAX_SIZE: u32 = 128; |
Member
There was a problem hiding this comment.
Q: Is it possible to use more than this on some machines? If so, do we have any follow-up work for permitting larger groups?
Member
Author
There was a problem hiding this comment.
No - the max observed subgroup size in the wild is 128 on qualcomm chips (and WARP). Similarly WARP supports the same range (4 to 128) so you can test with the full range of subgroups in the wild.
ErichDonGubler
approved these changes
Dec 3, 2025
Member
ErichDonGubler
left a comment
There was a problem hiding this comment.
LGTM for merging. I have an open question, but I'm trusting this will get resolved either at or after merge.
Co-authored-by: JMS55 <47158642+JMS55@users.noreply.github.com>
1bfdfef to
ac504eb
Compare
2 tasks
github-merge-queue bot
pushed a commit
to bevyengine/bevy
that referenced
this pull request
Jan 22, 2026
Upgrade to wgpu 28 > [!important] > This can't merge until bevyengine/naga_oil#132 does, and the dependency is updated from my fork to the release. > > Also requires wgpu 28 in dlss_wgpu: bevyengine/dlss_wgpu#17 > [!note] > This does not enable mesh shaders, and neither does the naga_oil PR. I chose to do an upgrade first, then go back and see about mesh shaders. Here's a general list of changes and what I did. Commits are grouped by feature except for the last one, which enabled solari when I ran the solari example. ## MipmapFilterMode is split from FilterMode - Split MipmapFilterMode from FilterMode #8314: gfx-rs/wgpu#8314 solution: implement From for `MipmapFilterMode`/`ImageFilterMode` since the values are the same. The split was because the spec indicates they are different types, even though they have the same values. ## Push Constants are now Immediates - gfx-rs/wgpu#8724 immediate_size is [a u32](https://docs.rs/wgpu/28.0.0/wgpu/struct.PipelineLayoutDescriptor.html#structfield.immediate_size) so use that instead of `PushConstantRange` ## Capabilities name changes - gfx-rs/wgpu#8671 Got new list from https://github.com/gfx-rs/wgpu/blob/trunk/wgpu-core/src/device/mod.rs#L449 and copied it in. ## subgroup_{min,max}_size moved from Limits to AdapterInfo - gfx-rs/wgpu#8609 Update the limits to have the fields they have now, mirror the logic from the other limits calls. ## multiview_mask - gfx-rs/wgpu#8206 set to None because we don't use it currently. Its vaguely for VR. ## error scope is now a guard - gfx-rs/wgpu#8685 retain guard and then pop() it later --- I made one mistake during the PR, thinking set_immediates was going to be the size of the immediates and not the offset. I'd like reviewers to take a look at immediates offset and size sites specifically just in case I missed something. Here's a bunch of examples running <img width="1470" height="1040" alt="screenshot-2025-12-24-at-16 47 22@2x" src="https://github.com/user-attachments/assets/83dcf4c8-69f5-480a-b724-86598530f25a" /> <img width="1470" height="1040" alt="screenshot-2025-12-24-at-16 48 44@2x" src="https://github.com/user-attachments/assets/46d897fa-1ab2-44ef-8055-fe2fce740dbc" /> <img width="1470" height="1040" alt="screenshot-2025-12-24-at-16 49 10@2x" src="https://github.com/user-attachments/assets/6ae7a9bf-0473-4800-8dfc-233a6a41d6df" /> <img width="1470" height="1040" alt="screenshot-2025-12-24-at-16 49 31@2x" src="https://github.com/user-attachments/assets/89f84a26-cfbd-4196-bca8-111c3d20ba7b" /> ## Known Issues > [!NOTE] > > There are no current known issues. Everything previous has been solved. - [x] enable extensions can not be written in naga oil in a way that allows them to be used in composed modules. Update: this was fixed by introducing a flag in naga-oil to force shaders to allow ray queries in composed modules when using bevy_solari. This is temporary and will be different in WESL-future. <details><summary>old explanation</summary> This is blocking solari from working on nvidia (solari runs successfully on macos m1) because it needs `enable wgpu_ray_query;`. Putting the declaration before `#define_import_path` means it gets stripped out (afaict), and putting it after results in ``` error: expected global declaration, but found a global directive ┌─ embedded://bevy_solari/scene/raytracing_scene_bindings.wgsl:3:1 │ 3 │ enable wgpu_ray_query; │ ^^^^^^ written after first global declaration │ = expected global declaration, but found a global directive ``` </details> - [x] dlss_wgpu mixes apis which [causes panics now](bevyengine/dlss_wgpu#17 (comment)). <details><summary>Previous notes as dlss_wgpu was being fixed here</summary> The wgpu release notes don't mention which PR this was introduced in, only saying: > Using both the wgpu command encoding APIs and CommandEncoder::as_hal_mut on the same encoder will now result in a panic. It was caused by gfx-rs/wgpu#8373 which claimed to not know of any use cases > With record on finish, the actual ordering on the command buffer is deeply counter intuitive (all as_hal would come first) and I think it additionally was just flat out broken in some ways > - https://discord.com/channels/691052431525675048/743663924229963868/1453786307099758683 Possible path forward is using multiple command buffers: https://discord.com/channels/691052431525675048/743663924229963868/1453795633503670415 </summary> --------- Co-authored-by: robtfm <50659922+robtfm@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Connections
Closes #8346
Description
Moved things over, as well as fix a few minor things in wgpu-info.
I have updated the defaults to the values specified by the WebGPU spec.
Testing
CI
Squash or Rebase?
Squash